package UI.funcionarios;

import UI.PanelFormularioGenerico;
import gestorBD.Controlador;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import uiMain.OpcionDeMenu;
import static uiMain.bienRaizOk.ventana;

public class PanelOpcionRegistrarUnNegocio extends OpcionDeMenu {

    JPanel panelTipoDeNegocio;
    PanelFormularioGenerico panelFormulario;
    JPanel panelDeBotones;

    String[] labelVenta = {"Código del inmueble", "Cédula del cliente demandante", "Precio de venta"};
    String[] valoresVenta = {"", "", ""};

    String[] labelsArrendamiento = {"Código del inmueble", "Cédula del cliente demandante", "Tarifa de arrendamiento"};
    String[] valoresArrendamiento = {"", "", ""};

    public PanelOpcionRegistrarUnNegocio() {
        super();
    }

    @Override
    public void ejecutar() {
        this.setLayout(new BorderLayout());

        JLabel labelSeleccioneTipoDeNegocio = new JLabel("Seleccione el tipo de negocio");
        String[] tiposDeNegocio = {"Arrendamiento", "Venta"};
        JComboBox comboBoxTipoDeNegocio = new JComboBox(tiposDeNegocio);

        this.panelTipoDeNegocio = new JPanel(new FlowLayout());
        this.panelTipoDeNegocio.add(labelSeleccioneTipoDeNegocio);
        this.panelTipoDeNegocio.add(comboBoxTipoDeNegocio);
        this.add(panelTipoDeNegocio, BorderLayout.NORTH);

        this.panelFormulario = new PanelFormularioGenerico();
        this.panelDeBotones = new JPanel(new FlowLayout());

        JButton botonRegistrar = new JButton("Registrar negocio");
        this.panelDeBotones.add(botonRegistrar);

        JButton botonVolver = new JButton("Volver");
        this.panelDeBotones.add(botonVolver);

        //Se añaden las funcionalidades
        comboBoxTipoDeNegocio.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                switch (comboBoxTipoDeNegocio.getSelectedIndex()) {

                    case 0://Negocio arrendamiento
                        String[] valoresVaciosArrendamiento = {"", "", ""};
                        valoresArrendamiento = valoresVaciosArrendamiento;
                        int[] tiposDeCampoArrendamiento = {0, 1, 1};
                        setPanelFormulario(new PanelFormularioGenerico("Criterio", "Valor", labelsArrendamiento, valoresArrendamiento, tiposDeCampoArrendamiento));
                        break;
                    case 1: //Negocio venta
                        String[] valoresVaciosVenta = {"", "", ""};
                        valoresVenta = valoresVaciosVenta;
                        int[] tiposDeCampoVenta = {0, 1, 1};
                        setPanelFormulario(new PanelFormularioGenerico("Criterio", "Valor", labelVenta, valoresVenta, tiposDeCampoVenta));
                        break;
                }
            }
        });

        botonRegistrar.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                String respuestaDelControlador;
                String codigoInmueble;
                long cedulaDemandante;
                long precio;
                if (comboBoxTipoDeNegocio.getSelectedIndex() == 0) { //Si se va a registrar un negocio arrendamiento
                    for (int i = 0; i < labelsArrendamiento.length; i++) {
                        if (!labelsArrendamiento[i].contains("opcional") && valoresArrendamiento[i].equals("")) {
                            String textoPopUp = "El campo " + labelsArrendamiento[i].toLowerCase() + " es obligatorio";
                            JOptionPane.showMessageDialog(null, textoPopUp, "Error", JOptionPane.ERROR_MESSAGE);
                            return;
                        }
                    }
                    codigoInmueble = valoresArrendamiento[0];
                    cedulaDemandante = Long.parseLong(valoresArrendamiento[1]);
                    precio = Long.parseLong(valoresArrendamiento[2]);
                   
                    respuestaDelControlador = Controlador.registrarNuevoNegocioArrendamiento(codigoInmueble, cedulaDemandante,precio);
                } else { //Si se va a registrar un negocio demandador
                    for (int i = 0; i < labelVenta.length; i++) {
                        if (!labelVenta[i].contains("opcional") && valoresVenta[i].equals("")) {
                            String textoPopUp = "El campo " + labelVenta[i].toLowerCase() + " es obligatorio";
                            JOptionPane.showMessageDialog(null, textoPopUp, "Error", JOptionPane.ERROR_MESSAGE);
                            return;
                        }
                    }
                    codigoInmueble = valoresVenta[0];
                    cedulaDemandante = Long.parseLong(valoresVenta[1]);
                    precio = Long.parseLong(valoresVenta[2]);
                    respuestaDelControlador = Controlador.registrarNuevoNegocioVenta(codigoInmueble, cedulaDemandante,precio);
                }

                if (!respuestaDelControlador.contains("correctamente")) {
                    JOptionPane.showMessageDialog(null, respuestaDelControlador, "Error", JOptionPane.ERROR_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(null, respuestaDelControlador, "Información", JOptionPane.INFORMATION_MESSAGE);
                    ventana.mostrarPanelOpcionesDeFuncionario();
                }
            }

        });

        botonVolver.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                ventana.mostrarPanelOpcionesDeFuncionario();
            }

        });

        ventana.mostrarPanel(this);

    }

    private void setPanelFormulario(PanelFormularioGenerico nuevoPanelFormulario) {

        this.remove(this.panelFormulario);
        this.remove(this.panelDeBotones);
        this.panelFormulario = nuevoPanelFormulario;
        this.add(this.panelFormulario, BorderLayout.CENTER);
        this.add(this.panelDeBotones, BorderLayout.SOUTH);
        this.revalidate();
        this.repaint();
    }

    @Override
    public String toString() {
        return "Registrar un negocio";
    }

}
